package ru.passivemoney.manage.job;

import com.dukascopy.api.IOrder;

public abstract class Job {
	
	private static volatile long idCounter = 0;
	private final long id;
	
	protected IOrder order;
	/**
	 * Максимальное время ожидания изменения состояния ордера, по истечении которого произойдёт выход из функции execute(). По умолчанию - 30 секунд
	 */
	protected Long maxTimeToWait = 30000L;
	protected Long timeCounter = 0L;
	/**
	 * Минимальный временной интервал используемый в программе. Например в цикле ожидания изменения состояния ордера
	 */
	protected Long minTimeToWait = 1000L;
	
	public Job() {
		super();
		id = idCounter++;
	}
	
	public Job(IOrder order) {
		this();
		this.order = order;
	}

	protected abstract void execute();
	
	public final long getId(){
		return id;
	}

	
}
